iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 5
0
自我挑戰組

邁向 JavaScript 核心之路 系列 第 5

[Day 5] JavaScript 語法介紹 - 立即函式 ( IIFE )

  • 分享至 

  • xImage
  •  

今天要介紹給各位客倌的是立即函式 ( Immediately Invoked Function Expression ),是指一個立刻執行的函式,常被使用在只執行一次的程式碼上,例如說初始化的動作,而且因為它自成一個區域,所以可以避免與全域的變數污染。

所以上述了這麼多,總結來說,立即函式有兩個優點

  1. 全域變數減少: 將變數暴露在全域中是非常危險的,因為很有可能會被其他地方的程式修改到,導致相同的全域變數會被覆蓋掉。

  2. 全域變數區域化: JavaScript 在尋找變數時,會優先找區域裡的變數,若找不到才會往上層獲全域變數找,所以把全域變數當成參數傳給立即函式,能夠在效能上獲得些許提升。

以下,就讓我們來實作看看吧!


    // function 內的區域變數
    
    var a = 1;
    
    (function() {
        var b = true;
        console.log(a); // 1;
    })();
    
    console.log(b); // b is not defined;
    
    // 將全域變數當作參數傳遞
    
    (function(window, document) {
        window.onerror = function() {
            console.log("error");
        };
        document.querySelector("body").addEventListener("click", function() {
            console.log("click");
        });
    })(window, document);

呼,接下來就要進到語言特性的部分了,對於閉包總是有一種霧裡看花的感覺,希望能藉由後面的文章,來對閉包有個更深刻的了解,客倌,我們下回見!

參考資料: Tommy - 深入 JavaScript 核心課程


上一篇
[Day 4] JavaScript 語法介紹 - function arguments
下一篇
[Day 6] JavaScript 語法特性 - 範圍鏈 ( Scope chain )
系列文
邁向 JavaScript 核心之路 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言